#include<stdio.h>
#include<stdlib.h>

//36
// void swap(int*a,int*b){
//     int t=*a;
//     *a=*b;
//     *b=t;
// }

//37
// void reverseArray(int* p,int n){
//     int* left=p;
//     int* right=p+n-1;
//     while(left<right){
//         int t=*left;
//         *left=*right;
//         *right=t;
//         left++;
//         right--;
//     }
// }

//38
// void calculateAverage(int* a,int n){
//     int sum=0;
//     float average;
//     for(int i=0;i<n;i++){
//         sum+=*(a+i);
//     }
//     average=(float)sum/n;
//     printf("%.2f",average);
// }

//39
// void sumArray(int *a,int n){
//     int sum=0;
//     for(int i=0;i<n;i++){
//         sum+=*(a+i);
//     }
//     printf("%d",sum);
// }

//40
// int findMax(int* a,int n){
//     int max=0;
//     for(int i=0;i<n;i++){
//         if(max<a[i]){
//             max=a[i];
//         }
//     }
//     return max;
// }

//41
// void concatenateString(char* s1,char* s2,char* s3){
//     while(*s1!='\0'){
//         *s3=*s1;
//         s3++;
//         s1++;
//     }
//     while(*s2!='\0'){
//         *s3=*s2;
//         s3++;
//         s2++;
//     }
//     *s3='\0';
// }

//42
// int areStringsEqual(char *s1,char* s2){
//     while(*s1!='\0' && *s2!='0'){
//         if(*s1!=*s2){
//             return 0;
//         }
//         s1++;
//         s2++;
//     }
//     if(*s1=='\0' && *s2=='\0'){
//         return 1;
//     }
//     else{
//         return 0;
//     }
// } 

//43
// int findt(char *str,char t){
//     int i=0;
//     while(*(str+i)!='\0'){
//         if(*(str+i)==t){
//             return i+1;
//         }
//         i++;
//     }
//     return -1;
// }

int main(){
//36
    // int a,b;
    // scanf("%d%d",&a,&b);
    // swap(&a,&b);
    // printf("%d %d",a,b);

//37
    // int a[5]={1,2,3,4,5};
    // reverseArray(a,5);
    // for(int i=0;i<5;i++){
    //     printf("%d ",a[i]);
    // }

//38
    // int a[]={1,2,3,4,5};
    // calculateAverage(a,5);

//39
    // int n=5;
    // int *a=(int*)malloc(n*sizeof(int));
    // if(a==NULL){
    //     return 1;
    // }
    // for(int i=0;i<n;i++){
    //     *(a+i)=i;
    // }
    // sumArray(a,n);
    // free(a);
 
 //40
    // int a[5]={1,2,8,4,5};
    // int max=findMax(a,5);
    // printf("%d",max);

//41
    // char* s1="Hello";
    // char* s2="World";
    // char s3[20];
    // concatenateString(s1,s2,s3);
    // printf("%s",s3);

//42
    // char* s1="Hello";
    // char* s2="Hello";
    // char* s3="Hell";
    // if (areStringsEqual(s3, s2)) {
    //     printf("相等\n");
    // } else {
    //     printf("不相等\n");
    // }

//43
    // char str[100];
    // char t;
    // scanf("%s %c",str,&t);
    // int n=findt(str,t);
    // printf("%d",n);




     int a[10],b[10]={0};
    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<10;i++){
        int c;
        c=a[i];
        b[c]++;
    }
    for(int i=0;i<10;i++){
        printf("%d ",b[i]);
    }

    return 0;
}